/*
 * ArenaTicketMain - Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * EventosEmCartazTableCellRenderer.java
 * �2006
 */
package br.unicamp.ic.inf312.arena.visao.eventoscartaz;

import java.awt.*;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;

import javax.swing.JLabel;
import javax.swing.table.*;

import br.unicamp.ic.inf312.arena.modelo.artistico.Espetaculo;
import br.unicamp.ic.inf312.arena.util.Util;
import br.unicamp.ic.inf312.framework.util.FrameworkUtil;

public class EventosEmCartazTableCellRenderer extends DefaultTableCellRenderer {

	public EventosEmCartazTableCellRenderer() {
		super();
	}

	//TODO: Alteracao para a ativ. 14
	protected Color renderColor(int tipo, boolean haVagas) {
		// -- tipo 1 = Filme, 0 = PecaTeatral
		
		if (! haVagas )
			return new Color(255, 100, 100);
		else if (tipo == Espetaculo.TIPO_ESPETACULO_PECA)
			return Color.YELLOW;
		else
			return Color.WHITE;
	}

	/**
	 *   A partir do TableModel do param. <i>table</i> obtem ultima coluna e estabelece
	 * logica de coloracao.
	 */
	public Component getTableCellRendererComponent(javax.swing.JTable table,
			Object value, boolean isSelected, boolean hasFocus, int row,
			int column) {

		EventosEmCartazTableModel tableModel = null;
		tableModel = ((EventosEmCartazTableModel) table.getModel());
		Object obj = tableModel.getValueAt(row,
				(tableModel.getColumnCount() - 1)); //ultima coluna - TIPO ESPETACULO
		
		//TODO: Alteracao para a ativ. 14
		boolean haVagas = true;
		Object qtdVagas = tableModel.getValueAt(row,
				(tableModel.getColumnCount() - 2)); //penultima coluna - QTDE VAGAS
		
		int tipoEspetaculo = 0;

		if (obj instanceof Integer) {
			tipoEspetaculo = ((Integer) obj).intValue();
		}
		
		//TODO: Alteracao para a ativ. 14
		if (qtdVagas instanceof Integer)
			haVagas = ((Integer) qtdVagas).intValue() > 0;
		
		//
		if (value instanceof Timestamp) {
			value = FrameworkUtil.formatarData((Timestamp) value);
		}
		//
		if (value instanceof Date) {
			value = Util.obterDataFormatada((Date) value);
		}
		//
		if (value instanceof Time) {
			value = Util.obterHoraFormatada((Time) value);
		}

		JLabel label = (JLabel) super.getTableCellRendererComponent(table,
				value, isSelected, hasFocus, row, column);

		if (column != 1)
			label.setHorizontalAlignment(JLabel.CENTER);

		//TODO: Alteracao para a ativ. 14
		if (isSelected) {
			label.setForeground(renderColor(tipoEspetaculo, haVagas));
			label.setBackground(Color.GRAY);
		} else {
			label.setForeground(haVagas ? Color.BLACK : Color.WHITE);
			label.setBackground(renderColor(tipoEspetaculo, haVagas));
		}
		return label;
	}
}